// TOWN SPECIAL ENCOUNTERS
//    Town 21: Fort Emergence

beginzonescript;

variables;

short im_hostile = 0;
short max_crime = 200;
short last_abil;
short counter = 0;
short set_ter = 0;
short set_ter2 = 0;
short bar_mes = 0;
short cen_y = 7;

body;

beginstate INIT_STATE;
	last_abil = get_current_tick();

	set_level(30001,1);
	
//	set_name(,);
//	add_range_to_group(,,groupn);

	set_personality_name(420,"Anaximander");
	set_personality_name(421,"Levy");
	set_personality_name(422,"Marian");
	set_personality_name(423,"Captain Ko");
	set_personality_name(424,"Commander Johnson");
	set_personality_name(425,"Elisa");
	set_personality_name(426,"Gordon");
	set_personality_name(427,"Flanagan");
	set_personality_name(428,"Habecker");
	set_personality_name(429,"Thereza");
	set_personality_name(430,"Cheeseball");
	set_personality_name(431,"Yanmitho");
	set_personality_name(432,"Berra");
	set_personality_name(433,"Eva");
	set_personality_name(434,"Mazumdar");
	set_personality_name(435,"Solberg");
	set_personality_name(436,"'X'");
	set_personality_name(437,"Ilona");

	// orb door
	if (gf(308,6) > 0) {
		kill_object(148,1);
		set_floor(0,18,11,11);
		set_floor(0,18,12,11);
		set_floor(0,18,13,12);
		}
	
	// remove flanagan
	if (gf(43,9) > 0) 
		erase_char(2115);
	
	set_crime_tolerance(max_crime);

		if (revive_party()) {
			print_str_color("Entering a friendly major city heals your wounds",2);
			print_str_color("  and restores your spell energy.",2);
			}
	break;

beginstate EXIT_STATE;
break;

beginstate START_STATE;
	// spell barrier
	if ((set_ter2 == 0) && (gf(22,29) > 0)) {
		set_ter2 = 1;
		kill_object(134,1);
		}
		
	// item hint stage
	if ((gf(21,13) > 0) && (gf(21,22) == 0))
		assert_hint(0);
	if ((gf(21,22) == 0) && (party_has_item_equip(328)) ) {
		sf(21,22,1);
		ok_dlog(58,1);
		}

	// fight tutorial
	if ((is_combat()) && (gf(21,14) == 1)) {
		sf(21,14,2);
		begin_talk_mode(8);
		}
	if ((num_chars_in_group(1) == 0) && (gf(21,15) == 0))
		sf(21,15,1);
	if ((gf(21,15) == 1) && (is_combat() == FALSE)) {
		sf(21,15,2);
		begin_talk_mode(7);
		}
		
	if (gf(308,8) == 0) {
		if (get_ran(1,0,100) < 10)
			give_char_text_bubble(2100,"Explore the surface.");
		if (get_ran(1,0,100) < 10)
			give_char_text_bubble(2100,"Come in and speak.");
		if (get_ran(1,0,100) < 10)
			give_char_text_bubble(2100,"I can give more information.");
		if (get_ran(1,0,100) < 10)
			give_char_text_bubble(2100,"Levy can supply you.");
		if (get_ran(1,0,100) < 10)
			give_char_text_bubble(2100,"We have little time.");
		if (get_ran(1,0,100) < 10)
			give_char_text_bubble(2100,"The Empire hasn't found us.");
		}	
	if (gf(308,8) > 0) {
		if (get_ran(1,0,100) < 10)
			give_char_text_bubble(2100,"There is hope at last.");
		if (get_ran(1,0,100) < 10)
			give_char_text_bubble(2100,"I hope Prazac is true to her word.");
		if (get_ran(1,0,100) < 10)
			give_char_text_bubble(2100,"We are counting on you.");
		}	
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2148,"I can reward you.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2148,"Supplies are tight here.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2148,"Ah. The explorer.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2148,"You can get a per diem.");
	if ((get_ran(1,0,100) < 10) && (gf(308,9) == 0))
		give_char_text_bubble(2102,"You're going to the surface?");
	if ((get_ran(1,0,100) < 10) && (gf(308,9) > 0))
		give_char_text_bubble(2102,"You've been to the surface!");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2102,"This work is boring.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2102,"I can't wait to go outside.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2102,"Hope we don't have to fight.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2103,"Hi!");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2103,"Hope I can help!");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2103,"Help yourself to supplies.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2103,"I won't act all superior.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2106,"Need directions?");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2106,"Elisa really can cook.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2106,"Sorry, just having lunch!");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2106,"We've all heard about you!");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2146,"(Swish! Swish!)");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2146,"(Stab!)");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2146,"(Leap!)");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2146,"I only train the elite.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2146,"What do you need?");
	if ((get_ran(1,0,100) < 10) && (gf(308,10) > 0))
		give_char_text_bubble(2108,"Bring me your evidence.");
	if ((get_ran(1,0,100) < 10) && (gf(308,10) > 0))
		give_char_text_bubble(2108,"Search where the plagues come from.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2108,"(Mutter. Mutter.)");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2108,"Another disruption.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2108,"I don't teach.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2108,"Shhhhh!");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"So many samples.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"These plants are lovely.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"They need sun.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"Animals are kept to the south.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"Watch where you step.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"I guard the spell tomes.");
	if ((gf(22,18) > 0) || (gf(22,19) > 0)) {
		if (get_ran(1,0,100) < 15)
			give_char_text_bubble(2110,"Dang it!");
		if (get_ran(1,0,100) < 15)
			give_char_text_bubble(2110,"I'll have to clean this up!");
		if (get_ran(1,0,100) < 15)
			give_char_text_bubble(2110,"Stop opening the gates!");
		}
		else {
			if (get_ran(1,0,100) < 10)
				give_char_text_bubble(2110,"Don't let the samples out.");
			if (get_ran(1,0,100) < 10)
				give_char_text_bubble(2110,"The 'sheep' will not harm you.");
			if (get_ran(1,0,100) < 10)
				give_char_text_bubble(2110,"These are from the surface!");
			if (get_ran(1,0,100) < 10)
				give_char_text_bubble(2110,"I believe they can be delicious.");
				}
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2113,"Upper Avernum is going.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2113,"Beware the roads.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2113,"Watch for the goblins.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2113,"Is quiet here, still.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2114,"Shhh.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2114,"Hmmm.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2114,"Ugh.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2114,"When?");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2114,"Worried.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2145,"So bored.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2145,"Wish I could go out.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2145,"I wonder what a 'bird' is like.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2145,"I'd like to find a 'shark.'");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2145,"Maybe I'll go look at the sheep.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2116,"Meow.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2116,"I'm hungry.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2116,"Meow. Meow. Satisfied?");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2116,"I miss the Tower.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"I shouldn't be here.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"The Tower is gone.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"Such a disaster.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2111,"I can still help you.");
	if (get_ran(1,0,100) < 15)
		give_char_text_bubble(2112,"...");
	if (get_ran(1,0,100) < 15)
		give_char_text_bubble(2112,".....");
	if (get_ran(1,0,100) < 15)
		give_char_text_bubble(2112,"....");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2115,"I'm bored.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2115,"Come keep me company.");
	if (get_ran(1,0,100) < 10)
		give_char_text_bubble(2115,"I need something to do.");

	// CUTSCENE PT 1
	if ((gf(21,9) > 0) && (gf(21,9) < 200)) {
		if (gf(21,9) == 1) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 2) {
			inc_flag(21,9,1);
			set_cutscene_text(0,3,"Legends tell that Avernum");
			}
		else if (gf(21,9) == 3) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 4) {
			inc_flag(21,9,1);
			set_cutscene_text(1,3,"is the gateway to the underworld");
			}
		else if (gf(21,9) == 5) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 6) {
			set_cutscene_text(2,3,"from which the dead never return.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 7) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 8) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 9) {
			set_view_center(8,cen_y);
			set_cutscene_text(1,1,"Avernum is also a real place.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 10) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 11) {
			set_cutscene_text_vis(1,2);
			set_cutscene_text(0,3,"It is many miles of caves and tunnels,");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 12) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 13) {
			set_cutscene_text(2,3,"far below the world's surface.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 14) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 15) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 16) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 17) {
			play_sound(169);
			run_sparkles_on_object(193,92,8,3);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 18) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 19) {
			set_cutscene_text(0,3,"The Empire rules the surface totally.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 20) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 21) {
			set_cutscene_text(1,3,"When they discovered Avernum,");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 22) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 23) {
			set_cutscene_text(2,3,"they had the perfect use for it:");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 24) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 25) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text(1,1,"A prison.");
			set_cutscene_text_vis(2,2);
			relocate_char(2147,8,7,TRUE); // move a
			play_sound(189);
			set_facing(2147,3);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 26) {
			give_char_text_bubble(2147,"What is this place?");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 27) {
			give_char_text_bubble(2147,"");
			move_to_loc(2147,8,12);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 28) {
			if (cutscene_can_proceed())
				inc_flag(21,9,1);
			}
		else if (gf(21,9) == 29) {
			set_cutscene_text(0,3,"Everyone who didn't fit in:");
			set_cutscene_text_vis(1,0);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 30) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 31) {
			set_cutscene_text(1,1,"The rebels.");
			relocate_char(2152,8,7,TRUE); // move b
			play_sound(189);
			set_facing(2152,3);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 32) {
			move_to_loc(2152,8,8);
			if (cutscene_can_proceed())
				inc_flag(21,9,1);
			}
		else if (gf(21,9) == 33) {
			set_cutscene_text(1,1,"The antisocial.");
			relocate_char(2153,7,7,TRUE); // move c
			play_sound(189);
			set_facing(2153,3);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 34) {
			move_to_loc(2152,8,8);
			move_to_loc(2153,7,8);
			if (cutscene_can_proceed())
				inc_flag(21,9,1);
			}
		else if (gf(21,9) == 35) {
			set_cutscene_text(1,1,"Those with incorrect opinions.");
			relocate_char(2154,9,7,TRUE); // move d
			play_sound(189);
			set_facing(2154,3);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 36) {
			move_to_loc(2152,8,9);
			move_to_loc(2153,7,8);
			move_to_loc(2154,9,8);
			if (cutscene_can_proceed())
				inc_flag(21,9,1);
			}
		else if (gf(21,9) == 37) {
			set_cutscene_text(0,3,"They were teleported into Avernum ...");
			set_cutscene_text(1,3,"Forever.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 38) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 39) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 40) { // move everyone out scroll south
			if (cen_y < 18)
				cen_y = cen_y + 1;
			set_view_center(8,cen_y);
			if (cen_y == 8)
				set_cutscene_text(0,3,"The Avernites built subterranean cities.");

			if (cen_y == 11)
				set_cutscene_text(1,3,"They learned to fight.");
			if (cen_y == 13) {
				play_sound(80);
				run_a_char_animation(2155,3,1,16);
				}
			if (cen_y == 15) {
				play_sound(81);
				run_a_char_animation(2156,3,1,16);
				}
				
			if (cen_y == 15)
				set_cutscene_text(2,3,"They studied magic.");
			if (cen_y == 17) {
				play_sound(150);
				run_a_char_animation(2157,7,1,16);
				create_projectile_rain(12,21, 144,1);
				}
			
			if (cen_y >= 9)
				give_char_text_bubble(2147,"Let's go!");
			if (cen_y >= 13)
				give_char_text_bubble(2147,"");
			
			if (cen_y >= 13) {
				move_to_loc(2147,8,24);
				move_to_loc(2152,8,24);
				move_to_loc(2153,8,24);
				move_to_loc(2154,8,24);
				if (char_ok(2147))
					if (char_loc_y(2147) >= 23)
						erase_char(2147);
				if (char_ok(2152))
					if (char_loc_y(2152) >= 23)
						erase_char(2152);
				if (char_ok(2153))
					if (char_loc_y(2153) >= 23)
						erase_char(2153);
				if (char_ok(2154))
					if (char_loc_y(2154) >= 23)
						erase_char(2154);
				}

			if (cen_y == 18)
				inc_flag(21,9,1);
			}
		else if (gf(21,9) == 41) {
			erase_char(2152);
			erase_char(2153);
			erase_char(2154);
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);

			relocate_char(2158,6,10,FALSE); 
			set_facing(2158,7);
			relocate_char(2159,10,10,FALSE); 
			set_facing(2159,7);
			relocate_char(2160,11,6,FALSE); 
			set_facing(2160,1);
			relocate_char(2161,8,7,FALSE); 
			set_facing(2161,7);

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 42) {
			if (cen_y > 7)
				cen_y = cen_y - 1;
			set_view_center(8,cen_y);

			if (cen_y == 16)
				set_cutscene_text(0,3,"They built their strength");
			if (cen_y == 13)
				set_cutscene_text(1,3,"and, when they were ready,");
			if (cen_y == 10)
				set_cutscene_text(2,3,"they got their revenge.");
			if (cen_y == 7) {
				set_cutscene_text_vis(0,2);
				set_cutscene_text_vis(1,2);
				set_cutscene_text_vis(2,2);
				}
				
			if (cen_y == 7)
				inc_flag(21,9,1);
			}
		else if (gf(21,9) == 43) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 44) {
			set_cutscene_text(0,3,"The archmage Erika");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 45) {
			set_cutscene_text(1,3,"made her own teleporter.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 46) {
			play_sound(189);
			run_sparkles_on_char(2161,4,20,0);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 47) {
			relocate_char(2161,25,52,FALSE); 
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 48) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 49) { // HAWTHORNE ROOM
			set_view_center(8,36);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 50) {
			set_cutscene_text(0,3,"Emperor Hawthorne ruled the Empire.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 51) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 52) {
			set_cutscene_text(1,3,"He was brilliant and ruthless,");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 53) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 54) {
			set_cutscene_text(2,3,"and utterly despised.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 55) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 56) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);

			relocate_char(2161,8,38,TRUE); // move assassin
			set_facing(2161,7);
			play_sound(189);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 57) {
			give_char_text_bubble(2162,"WHAT!?");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 58) {
			play_sound(158);
			run_a_char_animation(2161,3,1,16);
			shoot_projectile(2161,7,32,112);
			shoot_projectile(2161,8,32,110);
			shoot_projectile(2161,9,32,112);
			shoot_projectile(2161,7,33,110);
			shoot_projectile(2161,8,33,112);
			shoot_projectile(2161,9,33,110);
			shoot_projectile(2161,7,34,112);
			shoot_projectile(2161,8,34,110);
			shoot_projectile(2161,9,34,112);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 59) {
			damage_char(2162,1000,1);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 60) {
			play_sound(189);
			run_sparkles_on_char(2161,4,20,0);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 61) {
			relocate_char(2161,25,52,FALSE); 
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 62) {
			play_sound(177);
			run_a_char_animation(2163,3,1,16);
			shoot_projectile(2163,7,37,62);
			shoot_projectile(2163,8,37,64);
			shoot_projectile(2163,9,37,62);
			shoot_projectile(2163,7,38,64);
			shoot_projectile(2163,8,38,62);
			shoot_projectile(2163,9,38,64);
			shoot_projectile(2163,7,39,62);
			shoot_projectile(2163,8,39,64);
			shoot_projectile(2163,9,39,62);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 63) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 64) {
			give_char_text_bubble(2163,"Oh dear.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 65) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 66) {
			give_char_text_bubble(2163,"");
			move_to_loc(2164,9,31);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 67) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 68) {
			give_char_text_bubble(2163,"Vladimir?");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 69) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 70) {
			give_char_text_bubble(2163,"");
			give_char_text_bubble(2164,"Yes, Garzahd?");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 71) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 72) {
			give_char_text_bubble(2163,"It is time to deal with Avernum.");
			give_char_text_bubble(2164,"");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 73) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 74) {
			give_char_text_bubble(2163,"");
			give_char_text_bubble(2164,"Yes, Garzahd.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 75) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 76) {
			give_char_text_bubble(2164,"");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 77) { // BIG BATTLE
			set_view_center(8,7);
			
			relocate_char(2158,6,10,FALSE); 
			set_facing(2158,7);
			relocate_char(2159,10,10,FALSE); 
			set_facing(2159,7);
			relocate_char(2160,7,11,FALSE); 
			set_facing(2160,7);
			relocate_char(2165,7,10,FALSE); 
			set_facing(2165,7);
			relocate_char(2166,9,10,FALSE); 
			set_facing(2166,7);
			relocate_char(2167,9,11,FALSE); 
			set_facing(2167,7);

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 78) {
			set_cutscene_text(0,3,"Avernum struck down the Emperor.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 79) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 80) {
			set_cutscene_text(1,3,"Four years later ...");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 81) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 82) { // emp teleps in
			play_sound(189); 
			relocate_char(2168,4,5,TRUE); 
			set_facing(2168,3);
			relocate_char(2169,5,5,TRUE); 
			set_facing(2169,3);
			relocate_char(2170,7,5,TRUE); 
			set_facing(2170,3);
			relocate_char(2171,9,5,TRUE); 
			set_facing(2171,3);
			relocate_char(2172,11,5,TRUE); 
			set_facing(2172,3);
			relocate_char(2173,12,5,TRUE); 
			set_facing(2173,3);


			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 83) {
			play_sound(189);
			relocate_char(2174,5,4,TRUE); 
			set_facing(2174,3);
			relocate_char(2175,11,4,TRUE); 
			set_facing(2175,3);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 84) {
			play_sound(189);
			relocate_char(2163,8,3,TRUE); 
			set_facing(2163,3);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 85) {
			set_cutscene_text(2,3,"... the Empire invaded.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 86) {
			give_char_text_bubble(2163,"Destroy them!");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 87) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 88) {
			
			move_to_loc(2158,6,8);
			move_to_loc(2159,10,8);
			move_to_loc(2165,7,8);
			move_to_loc(2166,9,8);
			
			move_to_loc(2169,5,7);
			move_to_loc(2170,7,7);
			move_to_loc(2171,9,7);
			move_to_loc(2172,11,7);
			
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 89) {
			give_char_text_bubble(2163,"");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 90) {
			run_a_char_animation(2158,3,1,16);
			run_a_char_animation(2171,3,1,16);

			run_a_char_animation(2167,3,1,16);
			create_projectile_rain(11,6, 133,2);
			play_sound(150);

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 91) {
			play_sound(81);
			run_a_char_animation(2165,3,1,16);
			run_a_char_animation(2172,3,1,16);

			run_a_char_animation(2160,3,1,16);
			create_projectile_rain(5,6, 143,2);
			play_sound(156);

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 92) {
			play_sound(81);
			run_a_char_animation(2159,3,1,16);
			run_a_char_animation(2170,3,1,16);

			run_a_char_animation(2175,3,1,16);
			create_projectile_rain(5,12, 214,2);
			play_sound(158);

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 93) {
			play_sound(80);
			run_a_char_animation(2166,3,1,16);
			run_a_char_animation(2169,3,1,16);

			run_a_char_animation(2174,3,1,16);
			create_projectile_rain(11,12, 205,2);
			play_sound(165);

			damage_char(2158,5000,1);
			damage_char(2159,5000,0);
			play_sound(40);
			play_sound(41);
			
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 94) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 95) {
			set_cutscene_text(0,3,"Avernum was outgunned ...");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 96) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 97) {
			set_cutscene_text(1,3,"... and outnumbered.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 98) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 99) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 100) {
			set_cutscene_text(0,3,"The Empire War was thought lost ...");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 101) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 102) {
			set_cutscene_text(1,3,"... until Avernum found an ally.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 103) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 104) {

			play_sound(189); 
			relocate_char(2176,5,9,TRUE); 
			set_facing(2176,7);
			relocate_char(2177,11,9,TRUE); 
			set_facing(2177,7);

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 105) {
			set_cutscene_text(2,3,"The alien Vahnatai joined you.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 106) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 107) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 108) {
			run_a_char_animation(2177,3,1,16);
			create_projectile_rain(5,6, 200,2);
			create_projectile_rain(5,6, 204,2);
			play_sound(161);

			give_char_text_bubble(2169,"Who are they!?");
			give_char_text_bubble(2172,"AAAAHHH!");

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 109) {
			run_a_char_animation(2176,3,1,16);
			create_projectile_rain(11,6, 204,2);
			create_projectile_rain(11,6, 200,2);
			play_sound(161);

			damage_char(2168,5000,1);
			damage_char(2170,5000,2);
			damage_char(2171,5000,2);
			damage_char(2173,5000,1);
			damage_char(2174,5000,2);
			damage_char(2175,5000,1);
			play_sound(40);
			play_sound(41);

			give_char_text_bubble(2163,"Retreat!");

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 110) {

			give_char_text_bubble(2169,"");
			give_char_text_bubble(2172,"");

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 111) {
			play_sound(189); 
			run_sparkles_on_char(2169,4,20,0);
			run_sparkles_on_char(2172,4,20,0);
			run_sparkles_on_char(2163,4,20,0);

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 112) {
			erase_char(2169);
			erase_char(2172);
			erase_char(2163);
			
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 113) {
			set_cutscene_text(0,3,"Your new allies from the deep underworld");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 114) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 115) {
			set_cutscene_text(1,3,"turned the tide.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 116) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 117) {
			set_cutscene_text(2,3,"The Empire was expelled.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 118) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 119) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			give_char_text_bubble(2167,"Now what, Erika?");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 120) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 121) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 122) {
			give_char_text_bubble(2167,"");
			give_char_text_bubble(2160,"Now we escape.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 123) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 124) {
			give_char_text_bubble(2160,"");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 125) { // FINAL TEXT
			set_cutscene_text(0,3,"Avernum won the Empire war.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 126) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 127) {
			set_cutscene_text(1,3,"Five years passed.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 128) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 129) {
			set_cutscene_text(2,3,"Nothing was heard from the Empire.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 130) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 131) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			set_view_center(8,52);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 132) {
			set_cutscene_text(0,3,"The Avernites decided that it");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 133) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 134) {
			set_cutscene_text(1,3,"was time to return to the surface.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 135) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 136) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 137) {
			set_cutscene_text(0,3,"They built a magical portal");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 138) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 139) {
			set_cutscene_text(1,3,"and established Upper Avernum.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 140) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 141) {
			set_cutscene_text(2,3,"New cities and tunnels, just below the surface.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 142) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 143) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 144) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 145) {
			set_cutscene_text(0,3,"They then selected someone");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 146) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 147) {
			set_cutscene_text(1,3,"to explore the surface");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 148) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 149) {
			set_cutscene_text(2,3,"for the first time:");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 150) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 151) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			set_cutscene_text(1,3,"You.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 152) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 153) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 154) {
			inc_flag(21,9,1);
			sf(21,9,199);
			}

		else if (gf(21,9) == 199) { // end cutscene start tutorial
			inc_flag(21,9,1);
			set_cutscene_text_vis(0,0);
			set_cutscene_text_vis(1,0);
			set_cutscene_text_vis(2,0);
			shift_view_to_char(random_party_member());
			toggle_cutscene(0);
			set_terrain_string_range("Welcome to Avernum! This is a tutorial to help you to get started. First, you need to learn how to move around. Select a spot on the ground to walk there.",2);
			
			}
		//else if (gf(21,9) == 22) {
		//	run_game_hardcode(2);
		//	inc_flag(21,9,1);
		//	}
		}
		
	// CUTSCENE PT 2
	if ((gf(21,15) == 3) && (gf(21,9) < 201)) {
		sf(21,15,4);
		sf(21,9,201);
		}
	if (gf(21,9) > 200) {
		if (gf(21,9) == 201) {
			toggle_cutscene(1);
			set_view_center(8,52);

			relocate_char(get_pc_id(0),39,7,TRUE); // move pcs
			relocate_char(get_pc_id(1),39,9,TRUE); // move pcs
			relocate_char(get_pc_id(2),37,7,TRUE); // move pcs
			relocate_char(get_pc_id(3),37,9,TRUE); // move pcs

			set_facing(30000,5);

			if (char_ok(get_pc_id(0)))
				cen_y = 0;
			else if (char_ok(get_pc_id(1)))
				cen_y = 1;
			else if (char_ok(get_pc_id(2)))
				cen_y = 2;
			else cen_y = 3;
				
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 202) {
			set_cutscene_text(0,3,"You were teleported up to Upper Avernum");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 203) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 204) {
			set_cutscene_text(1,3,"and sent to Fort Emergence, just below the surface.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 205) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 206) {
			set_cutscene_text(2,3,"Here, your final training began.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 207) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 208) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 209) {
			set_view_center(40,8);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 210) {
			set_cutscene_text(0,3,"You were told about life on the surface.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 211) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 212) {
			set_cutscene_text_vis(0,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 213) {
			give_char_text_bubble(2180,"This is what sunlight feels like.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 214) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 215) {
			play_sound(150);
			run_a_char_animation(2180,7,1,16);
			create_projectile_rain(38,8, 144,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 216) {
			give_char_text_bubble(2180,"");
			play_sound(150);
			run_a_char_animation(2180,7,1,16);
			create_projectile_rain(38,8, 144,2);
			give_char_text_bubble(get_pc_id(0),"Arrgh!");
			give_char_text_bubble(get_pc_id(3),"Ack!");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 217) {
			play_sound(150);
			run_a_char_animation(2180,7,1,16);
			create_projectile_rain(38,8, 144,2);
			give_char_text_bubble(get_pc_id(0),"");
			give_char_text_bubble(get_pc_id(3),"");
			give_char_text_bubble(get_pc_id(1),"It burns!");
			give_char_text_bubble(get_pc_id(2),"The surface hurts!");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 218) {
			give_char_text_bubble(get_pc_id(1),"");
			give_char_text_bubble(get_pc_id(2),"");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 219) {
			set_cutscene_text(0,3,"It was terrifying.");
			give_char_text_bubble(2180,"So watch out.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 220) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 221) {
			give_char_text_bubble(2180,"");
			set_cutscene_text_vis(0,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 222) {
			relocate_char(get_pc_id(0),24,8,FALSE); // move pcs
			relocate_char(get_pc_id(1),24,10,FALSE); // move pcs
			relocate_char(get_pc_id(2),26,10,FALSE); // move pcs
			relocate_char(get_pc_id(3),26,8,FALSE); // move pcs
			set_facing(30000,1);

			relocate_char(2180,21,10,FALSE); 
			set_facing(2180,5);
			set_view_center(23,9);

			set_cutscene_text(0,3,"Your briefing was extensive ...");

			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 223) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 224) {
			give_char_text_bubble(2180,"This ...");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 225) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 226) {
			give_char_text_bubble(2180,"... is a TREE!");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 227) {
			give_char_text_bubble(get_pc_id(cen_y),"???");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 228) {
			give_char_text_bubble(2180,"");
			give_char_text_bubble(get_pc_id(cen_y),"");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 229) {
			give_char_text_bubble(get_pc_id(cen_y),"What's it for?");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 230) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 231) {
			give_char_text_bubble(get_pc_id(cen_y),"");
			set_cutscene_text(1,3,"... and confusing.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 232) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 233) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 234) {
			set_view_center(8,52);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 235) {
			set_cutscene_text(0,3,"At last, you were declared ready.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 236) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 237) {
			set_cutscene_text(1,3,"You're to go see someone named Anaximander");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 238) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 239) {
			set_cutscene_text(2,3,"to get your orders and leave for the surface.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 240) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 241) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 242) {
			set_cutscene_text_vis(0,2);
			set_cutscene_text_vis(1,2);
			set_cutscene_text_vis(2,2);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 243) {
			set_cutscene_text(0,3,"All Avernum waits on you.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 244) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 245) {
			set_cutscene_text(1,3,"They hunger for the sunlight.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 246) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 247) {
			set_cutscene_text(2,3,"You carry the dreams of your people.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 248) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 249) {
			set_cutscene_text_vis(0,0);
			set_cutscene_text_vis(1,0);
			set_cutscene_text_vis(2,0);
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 250) {
			set_cutscene_text(1,1,"Good luck.");
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 251) {
			inc_flag(21,9,1);
			}
		else if (gf(21,9) == 252) {
			inc_flag(21,9,1);
			sf(21,9,255);
			}
		else if (gf(21,9) == 253) {
			inc_flag(21,9,1);
			}

		else if (gf(21,9) == 255) { // end cutscene start game
			revive_party();
			sf(21,9,0);
			sf(21,29,1);
			set_cutscene_text_vis(0,0);
			set_cutscene_text_vis(1,0);
			set_cutscene_text_vis(2,0);
			toggle_cutscene(0);
			run_game_hardcode(2);
			
			}
		}
break;

beginstate 10;
	//if (bar_mes == 0) { not sure why this was commented out
	//	bar_mes = 1;
		run_special(19);
	//	}
break;

beginstate 11;
break;

beginstate 12;
break;

beginstate 13;
break;

beginstate 14;
break;

//	print_str("");
//	set_terrain_string_range("",1);
//	set_terrain_string_range("The sign says - .",1);

